const express = require('express')
const app = express()
app.listen(3000)

const frontRouter = require('./frontRouter')
const bodyParser = require('body-parser')
const writeErr = require('./utils/writeError')
const writelog = require('./middleware/writeLog')


//记录日志 - 全局中间件
app.use(writelog)

// 获取post数据的中间件
app.use(bodyParser.urlencoded({extended: false}))

// 前台请求
app.use('/front', frontRouter)

//后台请求

//中间件错误调试
// app.get('/a',(req,res) => {
//     throw new Error('自定义错误')
// })

//404中间件和异常处理中间件
app.use((req,res,next) => {
    //错误了就将日志中最后的ok换成404
    writeErr('404')
    res.send('404')
})

app.use((err,req,res,next) => {
     //错误了就将日志中最后的ok换成err
    //  let log = fs.readFileSync('./logs/ordermeal.log','utf-8')
    //  log = log.replace('ok',err)
    //  fs.writeFileSync('./logs/ordermeal.log',log)
    writeErr('"' + err + '"')
    res.send('报错了')
})



/* 
    规划请求路径和请求方式以及要响应的数据：
    商品分类：
        请求方式 - get
        请求路径 - /front/api/cats/all
        响应数据：
            所有的分类数据 - [{}, {}]


    所有商品:
        请求方式 - get
        请求路径 - /front/api/menus/getall
        响应数据：
            所有的商品数据 - [{}, {}]
    搜索商品：
        请求方式 - get
        请求路径 - /front/api/menus/search
        响应数据：
            查到的所有商品 - [{},{}]


    购物车：
        请求方式 - get
        请求路径 - /front/api/cart/getall
        响应数据：
            所有购物车数据 - [{},{}]
    添加购物车：
    请求方式 - post
    请求路径 - /front/api/cart/add
    响应数据;
        成功或失败


    支付：
        请求方式 - post
        请求路径 - /front/api/orders/create
        响应数据：
            成功或失败
    订单：
        请求方式 - get
        请求路径 - /front/api/orders/getall
        响应数据：
            成功或失败



    注册：
        请求方式 - post
        请求路径 - /front/api/users/register
        响应数据：
            成功或失败
    登录：
        请求方式 - post
        请求路径 - /front/api/users/login
        响应数据：
            成功或失败
    


*/